package com.huike.report.mapper;

import com.huike.common.core.domain.AjaxResult;
import com.huike.report.domain.vo.DragonTigerVO;
import com.huike.report.domain.vo.LineChartVO;
import com.huike.report.domain.vo.PieChartVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 首页统计分析的Mapper
 * @author Administrator
 *
 */
public interface ReportMapper {
	/**=========================================基本数据========================================*/
	/**
	 * 获取线索数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getCluesNum(@Param("startTime") String beginCreateTime,
						@Param("endTime") String endCreateTime,
						@Param("username") String username);

	/**
	 * 获取商机数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getBusinessNum(@Param("startTime") String beginCreateTime,
						   @Param("endTime") String endCreateTime,
						   @Param("username") String username);

	/**
	 * 获取合同数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getContractNum(@Param("startTime") String beginCreateTime,
						   @Param("endTime") String endCreateTime,
						   @Param("username") String username);

	/**
	 * 获取合同金额
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Double getSalesAmount(@Param("startTime") String beginCreateTime,
						  @Param("endTime") String endCreateTime,
						  @Param("username") String username);

	/**=========================================今日简报========================================*/
	/**
	 * 查询该用户下今日的线索数目
	 *
	 * @return
	 */
	Integer getTodayCluesNum(@Param("nowTime") String nowTime,
						@Param("username") String username);
	/**
	 * 查询当前用户今日所有的商机数
	 *
	 * @return
	 */
	Integer getTodayBusinessNum(@Param("nowTime") String nowTime,
							 @Param("username") String username);
	/**
	 * 获取当前用户今日所有合同数量
	 * @param username			用户名
	 * @return
	 */
	Integer getTodayContractNum(@Param("nowTime") String nowTime,
							 @Param("username") String username);
	/**
	 * 获取当前用户当天合同金额
	 * @param username			用户名
	 * @return
	 */
	Double getTodaySalesAmount(@Param("nowTime") String nowTime,
							 @Param("username") String username);

	/**=========================================待办========================================*/

	/**
	 * 查询该用户下待跟进线索数目
	 *
	 * @return
	 */
	Integer getTofollowedCluesNum(@Param("startTime") String beginCreateTime,
							@Param("endTime") String endCreateTime,
							@Param("username") String username);
	/**
	 * 查询当前用户待跟进商机数目
	 *
	 * @return
	 */
	Integer getTofollowedBusinessNum(@Param("startTime") String beginCreateTime,
							   @Param("endTime") String endCreateTime,
							   @Param("username") String username);
	/**
	 * 查询当前用户待跟进商机数目
	 * @param username			用户名
	 * @return
	 */
	Integer getToallocatedCluesNum(@Param("startTime") String beginCreateTime,
							   @Param("endTime") String endCreateTime,
							   @Param("username") String username);
	/**
	 * 查询当前用户待分配商机数目
	 * @param username			用户名
	 * @return
	 */
	Integer getToallocatedBusinessNum(@Param("startTime") String beginCreateTime,
							  @Param("endTime") String endCreateTime,
							  @Param("username") String username);

	/**
	 * 统计分析-客户统计-学科客户分布饼图
	 *
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	List<PieChartVO> subjectStatistics(@Param("startTime") String beginCreateTime,
								 @Param("endTime") String endCreateTime,
								 @Param("username") String username);

	/**
	 * 统计分析--线索统计--新增线索数量折线图
	 *
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	List<Map<String, Object>> salesStatisticsCount(@Param("startTime") String beginCreateTime,
									 @Param("endTime") String endCreateTime,
									 @Param("username") String username);

	/**
	 * 统计分析--线索统计--统计所有线索
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	int getCountAllClues(@Param("startTime") String beginCreateTime,
						 @Param("endTime") String endCreateTime,
						 @Param("username") String username);
	/**
	 * 统计分析--线索统计--统计所有有效线索  :   线索表中状态是  1 、2、6、7的线索！
	 * @param beginCreateTime
	 * @param endCreateTime   Valid 有效的
	 * @return
	 */
	int getCountValidAllClues(@Param("startTime") String beginCreateTime,
						 @Param("endTime") String endCreateTime,
						 @Param("username") String username);

	/**
	 * 统计分析--线索统计--统计从有效线索转化来的商机数： 商机表中线索id不为空，且状态是1、2、4、7 的商机
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	int getCountBusiness(@Param("startTime") String beginCreateTime,
							  @Param("endTime") String endCreateTime,
							  @Param("username") String username);

	/**
	 * 统计分析--线索统计--统计从商机数转化来的合同：合同表中商机id不为空的合同
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	int getCountContract(@Param("startTime") String beginCreateTime,
						 @Param("endTime") String endCreateTime,
						 @Param("username") String username);

	/**
	 * 首页数据--商机转化龙虎榜   --用户名称  部门名称  转化数量
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	List<DragonTigerVO> businessChangeStatistics(@Param("startTime") String beginCreateTime,
										  @Param("endTime") String endCreateTime);

	/**
	 * 首页数据--商机转化龙虎榜   --转化率
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	Integer getRadio(@Param("startTime") String beginCreateTime,
					   @Param("endTime") String endCreateTime,
					   @Param("username") String username);

	/**
	 * 首页数据--线索转化龙虎榜
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	List<DragonTigerVO> salesStatistic1(@Param("startTime") String beginCreateTime,
												 @Param("endTime") String endCreateTime);

	/**
	 * 首页数据--线索转化龙虎榜   --转化率
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	Integer getCount(@Param("startTime") String beginCreateTime,
					 @Param("endTime") String endCreateTime,
					 @Param("username") String username);


}
